// var n;
// exports.RedPointCtrl = exports.RedPointType = exports.RedPointLevel = void 0;
// var a;
// var $singletonManager = require("./SingletonManager");
// var $playerDataManager = require("./PlayerDataManager");
// var $excel = require("./Excel");
// var $hallGlobalVariable = require("./HallGlobalVariable");
// var $hallManager = require("./HallManager");
// var d = (function (e) {
//     function t() {
//         var t = (null !== e && e.apply(this, arguments)) || this;
//         t.redPointMap = new Map();
//         return t;
//     }
//     __extends(t, e);
//     t.prototype.GetRedPointByType = function (e) {
//         this.CheckType(e);
//         return !!this.redPointMap.get(e) && this.redPointMap.get(e);
//     };
//     t.prototype.CheckType = function (e) {
//         var t = this;
//         switch (e) {
//             case a.freeDiamond:
//                 this.redPointMap.set(e, 0 == $hallManager.HallMgr.shopData.todayBuyDiamondCount);
//                 break;
//             case a.freeGold:
//                 this.redPointMap.set(e, 0 == $hallManager.HallMgr.shopData.videoBuyGoldCount);
//                 break;
//             case a.upEquip:
//                 this.redPointMap.set(e, !1);
//                 var o = $playerDataManager.PlayerDataMgr.dressUpArray.filter(function (e) {
//                     return 0 == e;
//                 });
//                 if (o && o.length > 0) {
//                     this.redPointMap.set(e, !0);
//                 } else {
//                     $excel.Excel.shuiguo_all.forEach(function (o) {
//                         var n = $playerDataManager.PlayerDataMgr.GetEquipDataById(o.id);
//                         if (n && n.isUnLock) {
//                             var i = $hallGlobalVariable.default.shuiGuoLevelMap.get(o.id);
//                             if (i && n.level <= i.length && n.fragments >= i[n.level - 1].shengjixiaohao) {
//                                 t.redPointMap.set(e, !0);
//                             }
//                         }
//                     });
//                 }
//         }
//     };
//     return t;
// })($singletonManager.SingletonMgr);
// (function (e) {
//     e[(e.little = 0)] = "little";
//     e[(e.all = 1)] = "all";
// })(exports.RedPointLevel || (exports.RedPointLevel = {}));
// (function (e) {
//     e[(e.freeDiamond = 1)] = "freeDiamond";
//     e[(e.freeGold = 2)] = "freeGold";
//     e[(e.upEquip = 3)] = "upEquip";
//     e[(e.type4 = 4)] = "type4";
//     e[(e.type5 = 5)] = "type5";
//     e[(e.type6 = 6)] = "type6";
//     e[(e.type7 = 7)] = "type7";
// })((a = exports.RedPointType || (exports.RedPointType = {})));
// exports.RedPointCtrl = d.getInstance();

// import { SingletonMgr } from "./SingletonManager";
// import { PlayerDataMgr } from "./PlayerDataManager";
// import { Excel } from "./Excel";
// import { default as HallGlobalVariable } from "./HallGlobalVariable";
// import { HallMgrInstance } from "./HallManager";

// /**
//  * 红点类型枚举
//  * 建议名称：RedPointTypeEnum
//  */
// export enum RedPointType {
//     freeDiamond = 1,
//     freeGold,
//     upEquip,
//     type4,
//     type5,
//     type6,
//     type7
// }

// /**
//  * 红点等级枚举
//  * 建议名称：RedPointLevelEnum
//  */
// export enum RedPointLevel {
//     little = 0,
//     all
// }

// /**
//  * 红点控制器类
//  * 建议名称：RedPointController
//  */
// export class RedPointCtrl extends SingletonMgr {
//     private redPointMap: Map<RedPointType, boolean>;

//     constructor() {
//         super();
//         this.redPointMap = new Map < RedPointType, boolean > ();
//     }

//     /**
//      * 根据类型获取红点状态
//      * @param type 红点类型
//      * @returns 红点状态
//      * 建议名称：getRedPointStatusByType
//      */
//     public GetRedPointByType(type: RedPointType): boolean {
//         this.CheckType(type);
//         return !!this.redPointMap.get(type) && this.redPointMap.get(type);
//     }

//     /**
//      * 检查红点类型并更新红点状态
//      * @param type 红点类型
//      * 建议名称：updateRedPointStatusByType
//      */
//     private CheckType(type: RedPointType): void {
//         switch (type) {
//             case RedPointType.freeDiamond:
//                 this.redPointMap.set(type, 0 == HallMgrInstance.shopData.todayBuyDiamondCount);
//                 break;
//             case RedPointType.freeGold:
//                 this.redPointMap.set(type, 0 == HallMgrInstance.shopData.videoBuyGoldCount);
//                 break;
//             case RedPointType.upEquip:
//                 this.redPointMap.set(type, false);
//                 const undressedEquipments = PlayerDataMgr.dressUpArray.filter(equip => equip == 0);
//                 if (undressedEquipments && undressedEquipments.length > 0) {
//                     this.redPointMap.set(type, true);
//                 } else {
//                     Excel.shuiguo_all.forEach(equipData => {
//                         const equip = PlayerDataMgr.GetEquipDataById(equipData.id);
//                         if (equip && equip.isUnLock) {
//                             const levelData = HallGlobalVariable.shuiGuoLevelMap.get(equipData.id);
//                             if (levelData && equip.level <= levelData.length && equip.fragments >= levelData[equip.level - 1].shengjixiaohao) {
//                                 this.redPointMap.set(type, true);
//                             }
//                         }
//                     });
//                 }
//                 break;
//         }
//     }
// }

// export const RedPointCtrlInstance = RedPointCtrl.getInstance();

import { SingletonBase } from "./SingletonManager";
import { PlayerDataMgr } from "./PlayerDataManager";
import { Excel } from "./Excel";
import { default as FruitDataManager } from "./HallGlobalVariable";
import { HallMgr } from "./HallManager";

/**
 * 红点类型枚举
 * 建议名称：RedPointTypeEnum
 */
export enum RedPointType {
    freeDiamond = 1,
    freeGold,
    upEquip,
    type4,
    type5,
    type6,
    type7
}

/**
 * 红点等级枚举
 * 建议名称：RedPointLevelEnum
 */
export enum RedPointLevel {
    little = 0,
    all
}

/**
 * 红点控制器类
 * 建议名称：RedPointController
 */
export class RedPointController extends SingletonBase {
    private redPointStatusMap: Map<RedPointType, boolean>;

    constructor() {
        super();
        this.redPointStatusMap = new Map<RedPointType, boolean>();
    }

    /**
     * 根据类型获取红点状态
     * @param type 红点类型
     * @returns 红点状态
     * 建议名称：getRedPointStatusByType
     */
    public getRedPointStatusByType(type: RedPointType): boolean {
        this.updateRedPointStatusByType(type);
        return !!this.redPointStatusMap.get(type) && this.redPointStatusMap.get(type);
    }

    /**
     * 检查红点类型并更新红点状态
     * @param type 红点类型
     * 建议名称：updateRedPointStatusByType
     */
    private updateRedPointStatusByType(type: RedPointType): void {
        switch (type) {
            case RedPointType.freeDiamond:
                this.redPointStatusMap.set(type, 0 == HallMgr.shopData.todayBuyDiamondCount);
                break;
            case RedPointType.freeGold:
                this.redPointStatusMap.set(type, 0 == HallMgr.shopData.videoBuyGoldCount);
                break;
            case RedPointType.upEquip:
                this.redPointStatusMap.set(type, false);
                const undressedEquipments = PlayerDataMgr.dressUpArray.filter(equipment => equipment == 0);
                if (undressedEquipments && undressedEquipments.length > 0) {
                    this.redPointStatusMap.set(type, true);
                } else {
                    Excel.shuiguo_all.forEach(equipmentData => {
                        const equipment = PlayerDataMgr.getEquipDataById(equipmentData.id);
                        if (equipment && equipment.isUnLock) {
                            const levelInfo = FruitDataManager.getShuiGuoLevelMap.get(equipmentData.id);
                            if (levelInfo && equipment.level <= levelInfo.length && equipment.fragments >= levelInfo[equipment.level - 1].shengjixiaohao) {
                                this.redPointStatusMap.set(type, true);
                            }
                        }
                    });
                }
                break;
        }
    }
}

export const RedPointCtrl = RedPointController.getInstance();